วิธีการเชื่อมต่อจาก QuickSight ไปยัง Athena บน AWS
สวัสดีครับ ครั้งนี้ผมจะมาอธิบายเกี่ยวกับ วิธีการเชื่อมต่อจาก QuickSight ไปยัง Athena ต่อจากบทความ การรัน SQL ไปยังไฟล์ใน S3 ด้วย Glue กับ Athena เพื่อดึงข้อมูลจาก Athena มาแสดงผลที่ QuickSight ครับ
เป้าหมายในการทำ
Service ที่ใช้ในบทความนี้คือ:
- Amazon S3
- Buckets (2)
- AWS Identity and Access Management (IAM)
- Roles (2)
- Policies
- Amazon EC2
- Key Pairs
- Instance
- Security Groups
- AWS Glue
- Databases
- Tables
- Crawlers
- Amazon Athena
- Workgroups
- QuickSight
โปรแกรมที่ใช้ในบทความนี้คือ:
- PuTTY
สิ่งที่ต้องมี
ขั้นตอนอาจจะซับซ้อนนิดนึง แนะนำให้เพื่อนๆ ลองอ่านรายละเอียดให้ดีก่อนลงมือทำในแต่ละขั้นตอน เพื่อป้องกันความผิดพลาดนะครับ
ก่อนอื่น ให้ทำการรัน SQL ไปยังไฟล์ใน S3 ด้วย Glue กับ Athen เตรียมไว้ โดยดูขั้นตอนได้ที่ด้านล่างนี้ครับ
เมื่อเตรียมการรัน SQL เรียบร้อยแล้วให้ทำการลงทะเบียน QuickSight ตามขั้นตอนด้านล่างนี้ครับ
! สำหรับผู้ใช้งานที่มีบัญชีอยู่แล้ว ข้ามขั้นตอนนี้ไปได้เลยครับ
แนะนำเพิ่มเติม: ขั้นตอนของ QuickSight access to AWS services แนะนำให้ทำการตั้งค่าตามรูปด้านล่างนี้ครับ
เปิดการใช้งาน Athena ใน QuickSight
เมื่อสร้างบัญชี QuickSight เสร็จแล้ว คลิกที่ไอคอน User (Account) ด้านขวาบน แล้วเลือก Manage QuickSight
มาที่เมนูด้านซ้าย เลือกSecurity & permissions
และมาที่ด้านขวา คลิกManage
หากคลิกManage
แล้วเกิดข้อผิดพลาดเกี่ยวกับ Permission และ Policy ของ IAM ให้แก้ไขโดย Restore การเข้าถึง QuickSight ตามลิงก์ด้านล่างนี้
Troubleshoot permission errors in Amazon QuickSight | AWS re:Post
*ในปัจจุบันทาง AWS จะไม่มีการตั้งค่าเกี่ยวกับ Permission และ Policy ของ IAM ให้กับบริการ QuickSight อีกต่อไป เนื่องจากเป็นนโยบายด้านความปลอดภัยของ AWS โดยท่านสามารถอ่านรายละเอียดได้ที่ลิงก์ IAM policy examples for Amazon QuickSight - Amazon QuickSight
ติ๊ก ▢ Amazon Athena (เมื่อคลิกแล้ว เครื่องหมาย✅ยังจะไม่แสดงให้เห็น และจะแสดงหน้า pop-up ขึ้นมา)
เลือก S3 Bucket ตามตารางตัวอย่างด้านล่างนี้
S3 Bucket | Write permission for Athena Workgroup | Description |
---|---|---|
✅ tinnakorn-test-athena-result | ✅ | S3 Bucket ที่สร้างขึ้นเพื่อบันทึกข้อมูลการรันคำสั่งของ Athena |
✅ tinnakorn-test-s3 | ▢ | S3 Bucket ที่สร้างขึ้นสำหรับใช้กับ EC2 |
เมื่อเลือกเสร็จเรียบร้อยแล้วให้ตรวจสอบอีกครั้ง เพราะว่าถ้าติ๊กผิดจะทำให้เกิด Error ในขั้นตอนอื่นๆ ได้
จากนั้นคลิกปุ่มFinish
ได้เลยครับ
ถ้าไม่มีข้อผิดพลาด ก็จะแสดงหน้าจอแบบนี้ จากนั้นคลิกปุ่มSave
ได้เลย
เมื่อกลับมาหน้า Security & permissions แล้ว จะแสดงหน้าจอแบบนี้ การตั้งค่าเปิดการใช้งาน Athena ใน QuickSight ก็เสร็จเรียบร้อยแล้วครับ
การเชื่อมต่อจาก QuickSight ไปยัง Athena
ก่อนอื่นทำการเปลี่ยนรีเจี้ยนจากN.Virginia
กลับมาเป็นAsia Pacific Singapore
เหมือนเดิม เพื่อเตรียมทำการเชื่อมต่อ Athena จาก QuickSight
มาที่มุมขวาบน คลิกที่ Account ของเรา เลือกN.Virginia >
ตามด้วยAsia Pacific (Singapore)
มาที่เมนูด้านซ้าย เลือกDatasets
และมาที่มุมขวาบน คลิกNew dataset
การตั้งค่า New Athena data source:
» ตั้งชื่อ Data source name เช่นtinnakorn-test
» เลือก Athena workgroup เช่นtinnakorn-test ⌵
» คลิกปุ่มValidate connection
เพื่อเชื่อมต่อกับ Athena workgroup
ถ้าเกิด Error ให้ย้อนกลับไปดูการตั้งค่าที่ การเลือก S3 Bucket แล้วกลับมาทำการเชื่อมต่ออีกครั้งครับ
เมื่อสามารถเชื่อมต่อกับ Athena workgroup ได้แล้ว คลิกที่Create data source
ได้เลยครับ
เลือก Table ที่สร้างไว้ใน Database ของ AWS Glue จากนั้นคลิกSelect
เลือก ◉Import to SPICE fot quicker analytics และคลิกEdit/Preview data
เมื่อแสดงหน้าหน้าจอแบบนี้แล้ว มาที่มุมขวาบน คลิกSeva & publish
และPublish & visualize
เมื่อแสดงหน้าจอแบบนี้ได้แล้ว การตั้งค่าของขั้นตอนนี้ก็เสร็จเรียบร้อยครับ
ทดสอบการใช้งาน QuickSight โดยใช้ Dataset ของ Athena
มาที่ Visual types ด้านล่างซ้าย เลือกไอคอนTable:
คลิกที่datetime
ค้างไว้ แล้วลากไปวางในช่องValue
ในส่วนของdistance
ก็ให้ลากไปวางในช่องValue
เหมือนกันครับ
เมื่อทำเสร็จแล้ว ก็จะได้ Table ตามรูปภาพครับ
ทีนี้ผมจะเพิ่ม Visual ขึ้นมาเพื่อให้เห็นการใช้งานที่หลากหลายมากขึ้นครับ
มาที่มุมซ้ายบน คลิก+ Add
และเลือกAdd visual
มาที่ Visual types ด้านล่างซ้าย เลือกไอคอนLine chart:
ในส่วนนี้ให้คลิกที่datetime
ค้างไว้ แล้วลากไปวางในช่องX axis
และลากdistance
ไปวางในช่องValue
ครับ
เปลี่ยนdatetime
ให้เป็นdatetime (Minute)
ดังนี้:
» คลิกที่datetime ⌵
ในช่อง X axis
» เลือกAggregate: Day >
» เลือกMinute
เมื่อเปลี่ยนเสร็จแล้ว จะแสดงหน้าจอแบบนี้ X axis:datetime (Minute) ⌵
เมื่อตั้งค่าเสร็จแล้ว ดูที่ Visual: Line chart ของเรา
จะเห็นว่าแสดงเป็นกราฟในรูปแบบ Line chart ครับ
เพียงเท่านี้ เราก็สามารถนำข้อมูลที่ได้มาจากการเชื่อมต่อกับ Athena มาแสดงผลใน QuickSight ได้เป็นที่เรียบร้อยแล้วครับ
การลบ AWS Resource ที่สร้างขึ้นในบทความนี้
การลบฟังก์ชันที่ได้สร้างขึ้นใน Service ต่างๆ
ลบตามขั้นตอนดังนี้:
- Amazon EC2
- Key Pairs
- Instance
- Security Groups
- Amazon Athena
- Workgroups
- AWS Glue
- Databases
- Tables
- Crawlers
- Amazon S3
- Buckets (2)
- AWS Identity and Access Management (IAM)
- Roles (2)
- Policies
- QuickSight
การลบฟังก์ชันใน Service ต่างๆ ถ้าเราไม่รู้ลำดับของการลบฟังก์ชันก็จะทำให้เกิด Error ในขณะลบ หรือไม่สามารถลบได้นั่นเอง เช่น ถ้าทำการลบ Security Group ที่กำลังเชื่อมต่ออยู่กับ EC2 โดยที่ไม่ Terminate EC2 ก่อน ก็จะไม่สามารถลบ Security Group ได้ เป็นต้น ดังนั้นแนะนำให้ลบตามขั้นตอนที่ผมเรียงไว้ได้เลยครับ
การ Terminate Instance, ลบ Key Pair และลบ Security Group ใน EC2
ดูตัวอย่างการลบที่นี่: การ Terminate Instance, ลบ Key Pair และลบ Security Group ใน EC2
การลบ Workgroups ใน Amazon Athena
ดูตัวอย่างการลบที่นี่: การลบ Workgroups ใน Amazon Athena
การลบ Crawlers และ Databases ใน AWS Glue
ดูตัวอย่างการลบที่นี่: การลบ Crawlers และ Databases ใน AWS Glue
การลบ Buckets ใน Amazon S3
การลบ Buckets นี้ต้องลบออกทั้งหมด 2 อัน ซึ่งจะมี Bucket ที่ใช้กับ EC2 และ Athena ครับ
ดูตัวอย่างการลบที่นี่: การลบ Buckets ใน Amazon S3
การลบ Role และ Policies ใน IAM
การลบ Role นี้ต้องลบออกทั้งหมด 2 อัน ซึ่งจะมี Role ที่ใช้กับ EC2 และ AWS Glue ครับ
ดูตัวอย่างการลบที่นี่: การลบ Role และ Policies ใน IAM
การลบบัญชี QuickSight ใน AWS
ดูตัวอย่างการลบที่นี่: การลบบัญชี QuickSight ใน AWS
สรุป
การสาธิตนี้ผมจะเน้นมาที่การเชื่อมต่อจาก QuickSight ไปยัง Athena โดยตั้งค่าให้ QuickSight สามารถเข้าถึง Athena ได้ จากนั้นก็สร้าง Dataset ใน QuickSight โดยใช้มูลของ Table ใน AWS Glue ที่เชื่อมต่อกับ Athena workgroup และสร้าง Visual type: Table กับ Line chart ใน Dataset ขึ้นมาเพื่อทดสอบการแสดงผลของข้อมูลที่ดึงมาจาก Athena นั่นเอง